﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "QPainter"
#include <QMainWindow>
#include "Gate.h"
#include "VNode.h"
#include "CircuitGraph.h"
#include "QMouseEvent"
#include "Input.h"
#include "Output.h"
#include "QVector"
#include "line.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    void drawGate(QPainter *painter, QVector <VNode> gates);//该函数被paintEvent函数调用
    void paintEvent(QPaintEvent *);     //绘制
    void mousePressEvent(QMouseEvent *e);       //按下
    void mouseMoveEvent(QMouseEvent *e);        //移动
    void mouseReleaseEvent(QMouseEvent *e);     //松开
    void mouseDoubleClickEvent(QMouseEvent* e); //双击
    CircuitGraph *circuit;
    QVector <QString> zhenzhibiao;
    QPoint temppoint_01;//鼠标按下时的点
    QPoint temppoint_02;//鼠标拖动时的点
    bool tempLineFlag;//倘若按下时的点的门或者输入输出模块没有被选中，即状态是1，那么flag置一，表示可以画线，否则不行。
    void ConnectGateAndGate(CircuitGraph *circuit);//门与门之间进行连接
    void DrawTempLine(QPainter *painter);//鼠标按下并拖拽画线
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
